home *** CD-ROM | disk | FTP | other *** search
-
- **********************************
- * 8-bit CPU Reassembler-Paket *
- * incl. PurePASCAL GEM-Quelltext *
- **********************************
-
- Programmautor :
-
- Jens Schulz
- Rosenstraße 5
- D-25368 Kiebitzreihe
- Deutschland
-
- ****************************************************************************
-
- Reassembler-Paket für folgende 8-bit CPU-Typen :
- ------------------------------------------------
-
- - INTEL 8051/52/252/535 Microcontroller
- - INTEL 8048 Microcontroller-Serie
- - Zilog Z-80 CPU
- - Mostek/Rockwell 6502-CPU
- - Motorola 68HC11-Microcontroller
- - INTEL 8080/85-CPU
-
- *****************************************************************************
-
- System: ATARI ST/TT/FALCON
- auflösungsunabhängig ab 640*400 Punkte
- multitaskingfähig
- mind. 1 MB RAM
-
- ****************************************************************************
-
- Diese Programme sind Freeware
-
- Weitergabe in PD-Sammlungen erwünscht. Sollten die Programme in kommerziellen
- Anwendungen genutzt werden, so bedarf dies meiner schriftlichen Genehmigung
- (Flasche Wein könnte förderlich sein).
-
- ****************************************************************************
-
- Was ist ein Reassembler, um alles in der Welt ?
- ------------------------------------------------
-
- Bevor wir diese Frage klären, stelle ich Ihnen erstmal eine Frage :
-
- Sind Sie GFA- oder OMIKRON BASIC-Programmierer und möchten Sie die GEM-
- Programmierung unter PurePASCAL lernen. Wollen Sie endlich mal saubere
- GEM-Applikationen schreiben und die GEM-POKErei a la BASIC vergessen ?
-
- Wenn ja :
- --------
-
- Dann können Sie den PurePASCAL GEM-Quelltext für Ihre neuen Programme
- nutzen. Ich selbst habe diese Programme in ca. 1 Monat geschrieben, um
- mit dem GEM-Handling von PurePASCAL vertraut zu werden. Die Programme
- umfassen alle wichtigen Funktionen zur Verwaltung von GEM-Programmen.
- Vorallem ist dies die Verwaltung von GEM-Events incl. Redraw-Behandlung,
- sowie die auflösungsunabhängigen Rasterkopierfunktionen mit VDI 109.
-
- 1 Monat ist eine relativ kurze Zeit für ein solches Projekt. Dies war
- natürlich nur möglich, weil ich bereits früher in C und Assembler GEM-
- Programme geschrieben hatte.
-
- Das Programm stellt Ihnen also ein GEM-Grundgerüst zur Verfügung. Sie
- können es beliebig verbessern (z.B. Fensterdialoge/Flying dials). Ich
- erhebe keinen Anspruch auf besonders geniale Programmierung, dies
- überlasse ich anderen.
-
-
- Reassembler
- -----------
-
- Sollten Sie sich bisher nicht mit Assemblern bzw. Maschinensprache ausein-
- ander gesetzt haben, dann können Sie wenigstens die PurePASCAL-GEM-Teile
- noch für sich nutzen.
-
- Die nachfolgenden Teile sind dann nur noch etwas für Assembler-Freaks :
- -----------------------------------------------------------------------
-
- Ein Reassembler beschäftigt sich mit der Entschlüsselung von Maschinen-
- programmen, in diesem Fall mit der Decodierung von Programmen von sechs
- 8-bit CPU-Familien.
-
- Ein Reassembler ist ein erweiterter Disassembler, d.h. er ist in der
- Lage, neben den Befehlen auch sämtliche Label (Sprungmarken) einzusetzen.
- Statt der Adressen sind nun Label im decodierten Maschinenprogramm. Dies
- hat den großen Vorteil, daß die Teile adreßunabhängig werden und bequem
- in einen Assembler neu codiert werden können.
-
- Der Z80 und 6502-Reassembler verfügen zusätzlich über die Möglichkeit
- Symboltabellen bei der Reassemblierung zu nutzen. So können z.B.
- wichtige ROM-Adressen und Peripherie-Adressen benannt werden.
-
- Außerdem erleichert ein Reassembler-Listing die Lesbarkeit von Programmen
- wesentlich.
-
- Wann nutzt man einen Reassembler ?
- ----------------------------------
-
- 1. sehr seltener Fall :
-
- Man glaubt, daß ein Hochsprachen-Compiler ineffektiv oder falsch codiert,
- und möchte dies herausbekommen.
-
- 2. seltener Fall :
-
- Man hat den Assembler-Sourcecode seiner letzten Maschinensteuerung
- verschlampt oder wegformatiert.
-
- 3. häufigster Fall :
-
- Ein Konkurrent hat ein geniales Programm geschrieben. Mit einem
- Reassembler tut man alles, um dessen Hyperpokes zu knacken.
-
- 4. Worst case :
- Konkurrent hat sich sein Programm verschlüsselt bzw. selbstmodifi-
- zierenden Code eingebaut. Da hilft auch ein Reassembler wenig.
- Manche Microcontroller können außerdem der Zugriff auf das interne
- ROM sperren (z.B. 68HC11), da hat man wieder Pech.
-
- *****************************************************************************
-
- Allgemeine Bedienung der Reassembler
- -----------------------------------
-
- Die sechs Reassembler ähneln sich sehr, wenn man einen verstanden hat,
- sind die anderen fast genauso zu bedienen. Die Unterschiede werden in
- einer gesonderten Dokumentation in jedem Reassembler-Ordner angesprochen.
-
-
- 1.) Maximale Codegröße für die Reassembler
- ------------------------------------------
-
- Die maximale Codegrösse ein Blocks ist auf 8 KByte begrenzt. Was, nur
- 8 KB ? Richtig gelesen, denn 8 KB Code ergeben bereits mehrere tausend
- Zeilen Assembler-Mnemonics.
-
- Es ist aber möglich sich mehrere 8 KB Blöcke zu reassemblieren und in
- einem Editor zusammenzufügen. Das Labelhandling erlaubt die Verwaltung
- von 64 KB Labeladressen aus mehreren Blöcken.
-
- 2.) Wie reassembliere ich meinen Code ?
- ---------------------------------------
-
- Max. 8 KByte große Binärdatei erzeugen, die die Endung (.BIN) hat.
- Unter dem Menüpunkt Datei, die entsprechende Code-Datei einladen.
-
- Unter Menüpunkt Datei, den Punkt 'Reassemblieren' aufrufen. Warten
- bis der Reassembler fertig ist, geht trotz PASCAL recht flott.
-
- Danach steht der dekodierte Code samt symbolischer Label im
- Ausgabefenster. Per Fensterpfeilen-/slider oder per Cursortasten
- kann jetzt beliebig geblättert werden.
-
- Das Fenster kann verkleinert und verschoben werden.
-
- 3.) Wie setze ich eine neue Startadresse (ORG) ?
- ------------------------------------------------
-
- Dummerweise fangen die meisten Maschinenprogramme nicht auf Adresse 0
- an bzw. sind nicht adressunabhängig.
-
- Unter Menüpunkt Datei, den Punkt 'Startadresse setzen' anwählen.
-
- Neue Basisadresse (ORG) in HEXADEZIMAL eingeben z.B. C000
- Danach erfolgt eine automatische Neu-Reassemblierung des Codes ab
- Adresse $C000.
-
- 4.) Wie überspringe ich Teile in der Binärdatei (File-Offset)
- -------------------------------------------------------------
-
- Wir haben gemerkt das uns der Anfang der Binärdatei überhaupt
- nicht interessiert, was tun.
-
- 1. Möglichkeit : Datei mit Debugger einkürzen (müsig)
-
- 2. Möglichkeit : Datei-Offset setzen
-
- Unter Menüpunkt Datei, den Punkt 'Startadresse setzen' anwählen.
-
- Start ab Datei-Byte-Nr. in HEXADEZIMAL eingeben z.B. 0100
- Danach erfolgt eine automatische Neu-Reassemblierung des Codes,
- allerdings werden 256 Bytes der Datei übersprungen und nicht
- reassembliert.
-
- 5.) Wie begrenze ich die 'Flut' der Reassembler-Zeilen ?
- --------------------------------------------------------
-
- Man kann auch die max. Anzahl der zu reassemblierenden Bytes
- einschränken. Standardmäßig wird immer die max. Dateigröße
- genommen.
-
- Unter Menüpunkt Datei, den Punkt 'Startadresse setzen' anwählen.
-
- Max. Reassemblierlänge. in Dezimal eingeben z.B. 100
- Danach erfolgt eine automatische Neu-Reassemblierung des Codes,
- allerdings werden nur max. 100 Bytes der Datei reassembliert
-
- 6.) Wie komme ich an eine ganz bestimmte Adresse im Code ?
- ----------------------------------------------------------
-
- Mit Blättern kommt man meistens nicht genau auf eine bestimmte
- Adresse im Code.
-
- Unter Menüpunkt Datei, den Punkt 'Adresse anspringen' anwählen.
-
- Adresse in HEXADEZIMAL eingeben z.B. 0E00. Danach erfolgt ein Sprung
- zu dieser Reassembler-Adresse (1. Adresse >= der angegebenen Adresse).
- Maschinenbefehle haben oft die Angewohnheit mehrere Adressen zu über-
- lappen.
-
-
- 7.) Wie werde ich Opcodes und Adressen im Listing wieder los ?
- --------------------------------------------------------------
-
- Das Reassembler-Listing zeigt mehr an, als man für eine spätere
- Neu-Assemblierung gebrauchen kann. Der Assembler würde reichlich
- ins Husten kommen, also weg mit den Adressen und den Opcodes.
-
- Unter Menüpunkt Datei, den Punkt 'Adressen einblenden' anwählen.
-
- Hier kann man wahlweise Adressen/Opcode ein- oder ausblenden.
-
- 8.) Wie bekomme ich das Reassembler-Listing als Datei oder Ausdruck ?
- ---------------------------------------------------------------------
-
- Man kann sich jeder Zeit das Reassembler-Listing aus Datei oder
- auf den Drucker ausgeben lassen. Beachten Sie, das im 'Worst case'
- mehrere tausend Zeilen Listing entstehen können.
-
- Entweder reichlich Papier/Disketten kaufen oder klugerweise der
- max. Reassemblierlänge einschränken.
-
- Beide Punkte sind unter dem Menüpunkt Ausgabe zu erreichen. Nach
- der Anwahl muß neu reassembliert werden.
-
- ****************************************************************************
-
- Labelhandling / Symbolische Reassemblierung
- -------------------------------------------
-
- Allen Reassemblern steht das Menü 'Label' zur Verfügung. Der Z-80
- und 6502-Assembler besitzen zusätzlich noch die Möglichkeit der
- symbolischen Reassemblierung.
-
- 1.) Labelhandling
- -----------------
-
- Alle Labelmarkierungen werden in einem 64 KB großen Array gehalten.
- Normalerweise wird dieses Array bei jedem Reassemblerlauf gelöscht.
-
- Unter dem Menü 'Label' und dem Menüpunkt 'Label automatisch löschen'
- wird die Löschung ein- oder ausgeschaltet.
-
- Welchen Sinn macht es die Labelmarkierungen nicht zu löschen ?
-
- Wenn man mehrere verschiedene Codedateien reassembliert, dann entstehen
- jeweils Labelzugriffe/Sprünge, die außerhalb dieses Codeblocks liegen
- können.
-
- Diese Labelverweise kann man für anderen Codedateien mitnutzen. Sinn
- macht dies natürlich nur, wenn diese Codedateien in einem Zusammen-
- hang stehen.
-
- 2.) Labeltabelle speichern
- --------------------------
-
- Man kann jederzeit die aktuelle Labeltabelle (64 KB) sichern. Sie
- hat die Extension (.LAB).
-
- 3.) Labeltabelle laden
- ----------------------
-
- Man kann sich eine 64 KB Labeltabelle jederzeit laden. Dieser Lade-
- vorgang sperrt automatisch die automatische Labellöschung.
-
- Symbolische Reassemblierung
- ---------------------------
-
- Ein Reassembler erzeugt stets automatische Label. Ein automatischer
- Label beginnt mit einem L, gefolgt von seiner Hexadezimaladresse.
- Automatische Label erlauben es, schnell die Struktur innerhalb eines
- Codesegments zu erkennen.
-
- Nun, automatische Label sind gegenüber einem simplen Disassembler
- sicherlich nicht schlecht. Aber noch schöner sind symbolische
- Namen, statt automatischen Label.
-
- Die 6502 und Z80-Reassembler beinhalten die symbolische Reassemb-
- lierung.
-
- Hier kann jeder Adresse ein Name zu geordnet werden. Diese Namen
- dürfen max. 8 Zeichen lang sein. Die Anzahl der symbolischen Label
- ist auf 2000 begrenzt.
-
- Warum gibt es dies nur bei Z80- und 6502-CPU's ? Der Grund ist ganz
- einfach. Die Z80 und 6502-CPU sind die bedeutensten Prozessoren von
- 8-bit Homecomputern (z.B. Schneider CPC, C64 usw.). Hier existieren
- kommentierte ROM-Listings und Adressverweise. Diese können genutzt
- werden, um Programme auf ROM/Adresszugriffe zu checken.
-
- Die anderen Prozessoren spielen eigentlich nur im Microcontroller-
- Bereich eine Rolle.
-
- 1.) Symboltabelle erstellen und importieren
-
- Eine Symboltabelle ist eine reine ASCII-Datei mit der Datei-Extension
- (.LBI). Sie kann mit jedem Editor stellt werden. Die Symbole und
- Adressen (in Hexadezimal) werden zeilenweise angegeben.
-
- Beispiel-Datei (6502.LBI):
- --------------------------
-
- POS_1=203
- LOOP=20D
- LOOP_1=214
- SET_TST=219
- PROC_1=223
- PROC_2=22E
- VALUE_1 = 68
- VALUE_2 = 69
-
- Diese Symboldatei wird unter dem Menü Symbol und unter dem Menüpunkt
- 'Symbole importieren' eingeladen. Nach dem Laden werden die Symbole
- nach ihren Adressen sortiert und stehen der Reassemblierung zur Ver-
- fügung.
-
- 2.) Symboldatei erzeugen
- ------------------------
-
- Im Gegensatz zur ASCII-Symboldatei ist die richtige Symboldatei eine
- sortierte und platzsparende Binärdatei. Sie kann jederzeit erzeugt
- werden, sobald einmal Symbole importiert wurden.
-
- Diese Datei wird schneller geladen und sollte nach einmaligen
- Import stets verwendet werden. Sie hat die Datei-Extension (.SYM).
-
- 2.) Symboldatei laden
- ---------------------
-
- Lädt kompakte Symboldatei ein. Dabei wird geprüft, ob es auch wirklich
- eine Symboldatei ist. Sie hat die Datei-Extension (.SYM).
-
- *****************************************************************************
-
- Farbliche Reassemblierung
- -------------------------
-
- Wenn Ihr ATARI mind. 16 Farben und mind. 640*400 unterstützt, dann
- werden Sie ein farbiges Reassemblerlisting erhalten. Dies ist nicht
- nur schön, sondern auch sehr informativ.
-
- Es gibt 3 Farben :
-
- - rot : alle Zeilen, die einen Label besitzen sind rot markiert
-
- - schwarz : alle Zeilen, die Adresse oder Sprünge beinhalten
-
- - blau : alle Zeilen, die keinerlei Adressen direkt ansprechen
-
- Die Farbe Rot hat immer Vorrang vor Schwarz und Blau, so daß jede
- labelmarkierte Zeile immer rot ist.
-
- (! Ein Grund mehr einen FALCON, TT oder eine Medusa zu besitzen !)
-
- *****************************************************************************
-
- Spezialregister/Porteinblendung
- -------------------------------
-
- Die 8051-Serie und der Motorola 68HC11 verfügen über eine diverse
- Anzahl von Spezialadressen.
-
- Diese werden standardmäßig eingeblendet. Der 68HC11-Reassembler
- erlaubt auch die Ausblendung der Registerbezeichner.
-
- *****************************************************************************
-
- Standard-Tastatur-Shortcuts
- ---------------------------
-
- Übersicht über die Tastatur-Shortcuts, die allen Reassemblern
- gemeinsam sind.
-
- Menü Datei
- ----------
-
- Code einladen Control L
- Startadresse setzen Control S
- Startadresse anspringen Control A
- Reassemblieren Taste F1
- Programmende Control Q
-
- Menü Ausgabe
- ------------
-
- Bildschim-Ausgabe Control B
- Drucker-Ausgabe Control P
- Datei-Ausgabe Control F
-
- Menü Label
- ----------
-
- Labeltabelle laden Control T
- Labeltabelle sichern Control N
- Label automat. löschen Control C
-
- *****************************************************************************
-
- Spezialverhalten der Reassembler
- --------------------------------
-
- Weitere Besonderheiten der einzelnen Reassembler sind in deren
- Spezial-Dokumentationen enthalten und dort nachzulesen.
-
-
- *****************************************************************************
-
- Quelltext zum 8080/85-Reassembler
- ---------------------------------
-
- Für diesen Reassembler liegt der gesamte Quelltext vor. Hier kann man
- das Grundschema eines Reassembler kennenlernen und außerdem die GEM-
- Programmierung. Der Quelltext ist für PurePASCAL 1.1 vorgesehen.
-
- Die anderen Quelltexte stehen nicht zur freien Verfügung und bleiben
- mein geistiges Eigentum (Bestechung zwecklos).
-
- Jeder kann diesen Quelltext für eigene Experimente nutzen, verbessern
- oder verschlimmbessern.
-
- Dateien des PurePASCAL-Quelltextes :
- ------------------------------------
-
- Übersetzung : nur Compilerflagge Z gesetzt, Stackgröße 16384 Bytes
-
- REASS_85.PAS - Quelltext des 8080/85 Reassemblers
- REASS_85.RSC - Resource-Datei des 8080/85 Reassemblers
- REASS_85.I - Resource-Datei Konstanten (Interface 2.2 PASCAL-Ausgabe)
- REASS_85.HRD - RCS Interface 2.2 Hilfsdatei
- GEMINIT.PAS - Includedatei von GEM-Initialisierung
- GEMINIT.PPU - GEM-Init als UNIT
-
- ******************************************************************************
-
- Freie PD-/Shareware-Assembler
- -----------------------------
-
- Es gibt eine riesige Auswahl an Assemblern/Disassemblern/Reassemblern für
- den ATARI. Ich habe mal die aktuelle Liste des Computer Club Elmshorn e.V.
- beigefügt. Falls Bedarf besteht, schicken Sie mir die entsprechenden Anzahl
- Leerdisketten und Rückporto zu. Die PD-Sammlung ist absolut kostenfrei.
-
- Kurze Erläuterung :
-
- - am Anfang steht die Disknummer der CCE PD-Sammlung
- - am Ende ein 3-stelliger Code und Sterne (je mehr Sterne um so besser).
- - vom Code die wichtigsten Buchstaben :
-
- X = läuft auf jedem ATARI
- S = läuft nur auf dem ST/STE
- G = GEM-Programm
- N = TOS/TTP-Programm
- A = Auflösungsunabhängig
- M = nur in Monochrom ST-High
-
- ------------------------------- (Assembler) -------------------------------
-
- 31 68000-ASSEMBLER-Paket MXN *
- 58 Disassembler 68000 AXN
- 95 Disassembler 68000 AXN
- 98 Turbo-Ass 1.72 & Debugger BSP **
- 143 Assembler 6303 AXN *
- 143 Assembler 65c02 AXG *
- 146 Z-80 Crossassembler MSN *
- 220 Sharp Pocket Assembler MSN *
- 263 68000-Assembler (incl. ASM-Source) AXN *
- 263 8048-Assembler/Disassembler (Incl. ASM-Source) AXN *
- 300 Assembler NEC 78310/312 AXN *
- 300 Assembler MCS 48 AXN *
- 300 Assembler 8051 AXN *
- 341 Desert Drain 1.1 680xx-Reassembler AXG *
- 380 Desert Drain 1.3 680XX-Reassembler AXG **
- 450 6502-Emulator-Demo AXG **
- 457 GNU-Assembler 1.38 AXN **
- 505 TurboAss & Debugger 1.77 AXP **
- 580 MIT2MOT-Konverter GNU68000-Syntax nach Motorola AXN *
- 611 6502-Disassembler AXN *
- 721 Crossassembler 6800/02/04/05/6303 AXN **
- 721 Crossassembler 6809/6811 AXN **
- 721 Crossassembler Z80/HD64180 AXN **
- 721 Crossassembler 8080/85 AXN **
- 721 Disassembler 68000 AXN
- 721 Assembler HP-48 0.99b AXN **
- 748 FAS Crossassembler RCA 1805 HD AXN **
- 748 FAS Crossassembler 2650 SC/MP II HD AXN **
- 748 FAS Crossassembler 6301 HD AXN **
- 748 FAS Crossassembler 6805 HD AXN **
- 748 FAS Crossassembler 6809 HD AXN **
- 748 FAS Crossassembler 6811 HD AXN **
- 748 FAS Crossassembler Zilog Z8 HD AXN **
- 748 FAS Crossassembler Zilog Z80 HD AXN **
- 748 FAS Crossassembler TI 7000 HD AXN **
- 748 FAS Crossassembler 6502 HD AXN **
- 748 FAS Crossassembler Intel 8048 HD AXN **
- 748 FAS Crossassembler Intel 8051 HD AXN **
- 748 FAS Crossassembler Intel 8096 HD AXN **
- 748 FAS Quelltexte (.LZH) HD AXN **
-
- ------------------------------ Assembler (DSP 56001) -----------------------
-
- 502 DSP-56000/01-ASSEMBLER AXN **
- 682 DSP-Shell 1.0 für DSP-ASSEMBLER AXG **
- 756 DSP 56001-Disassembler (.LOD) AXN **
- 756 DSP-Konverter .OUT to .LOD AXN *
-
- Der TurboAss 1.77-Assembler, der 680xx-Reassembler Desert-Drain und der
- 6502-Emulator bilden sicherlich die Highlights dieser Sammlung.
-
- *****************************************************************************
-
- Fehlerquellen
- -------------
-
- Die Entwicklung von Reassemblern ist ein sehr mühevoller Prozeß. Tausende
- von Bitkombinationen müssen richtig eingegeben und interpretiert werden.
- Ich kann deshalb natürlich nicht garantieren, daß es keine Fehler in
- einem der Reassembler gibt. Ich habe allerdings intensive Checks durch-
- geführt und mir alle Mühe gegeben alle Bugs zu greifen.
-
- Sollten Sie einen Fehler entdecken, dann informieren Sie mich bitte.
- Soweit es in meinen Kräften steht, wird dieser Bug umzingelt und
- getilgt.
-
- Updates
- -------
-
- Nun, Programme kann man stets verbessern oder optimieren. Den Level
- eines Desert Drain haben meine Reassembler leider noch nicht. Aber
- im 8-bit Bereich sind sie sicherlich noch ganz weit vorn. Vorschlägen
- und Quelltexten stehe ich offen gegenüber.
-
-
- Entwicklungssystem
- ------------------
-
- - ATARI TT 4MB/105MB HD und Proscreen TT/PTC 1526
- - PurePASCAL 1.1 von Application Systems Heidelberg
- - Interface 2.2 RCS von Olaf Meisiek (früher Shift Flensburg)
-
- Literaturhinweise
- -----------------
-
- Ottmar Feger, Die 8051-Microcontroller-Familie, Markt & Technik-Verlag
-
- Motorola 68HC11 Programmer's Reference Manual (vielen Dank an Motorola
- München für die kostenlose Überlassung !)
-
- Rodnay Zaks, Die Programmierung des Z80, Sybex-Verlag
-
- E. Floegel, The Apple in your Hand (6502), Hofacker-Verlag
-
- Horst Pelka, Praxis mit Mikroprozessoren (8080/85), Franzis Verlag
-
- National Semiconductor, 48-Series Microprocessor Handbook, 1980
-
- *****************************************************************************
-
- Kommerzielle Nutzung
- --------------------
-
- Die Reassembler sind Freeware und dürfen nur frei weitergegeben werden.
- Die Weitergabe innerhalb von PD-Sammlungen oder Mailboxen ist allerdings
- erwünscht.
-
- Der Verkauf außerhalb von PD-Sammlungen ist strikt verboten. Für solche
- Schnorrer habe ich nämlich nichts über.
-
- Die Beigabe innerhalb von kommerziellen Paketen bedarf meiner schriftlichen
- Erlaubnis. Wie bereits erwähnt könnte eine Flasche Wein (ALDI-free) dieser
- schriftlichen Erlaubnis Vorschub leisten. Umschreiben Sie bitte Ihr kommer-
- zielles Produkt. Ich werde dann entscheiden, ob es genügend 'PC-Knockout'
- Punkte enthält, um der freien Weitergabe zu zustimmen. Das Reassembler-
- Paket darf nur komplett weitergegeben werden.
-
- *****************************************************************************
-
- Schlußwort
- ----------
-
- Ich hoffe Ihnen gefällt dieses Reassemblerpaket. Spenden sind jederzeit
- willkommen, obwohl die Spendenmoral der ATARI-User relativ niedrig ist.
- Ich wünsche mir natürlich viele weitere PD-/Shareware-Applikationen
- für den ATARI. Es gibt noch viele Bereiche, wo man noch etwas bewegen
- kann. Also strengen Sie Ihre 'Birne' mal an, um vom User zum Program-
- mierer zu werden. PurePASCAL ist hier ein guter Anfang.
-
- Ich wünsche Ihnen viel Freude mit den Programmen und bedanke mich für
- Ihr Interesse bereits im voraus.
-
- Jens Schulz
- 2. April 1994
-
-
-
-
-
-
-
-
-
-
-
-